﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using KenLib.BusinessManager;
using DataInfo;

public partial class frmD_UserLoginManager : System.Web.UI.Page
{
    本社情報Manager _本社情報Manager = new 本社情報Manager();
    基本情報Manager _基本情報Manager = new 基本情報Manager();
    ユーザログインManager _ユーザログインManager = new ユーザログインManager();
    
    /// <summary>
    /// Coder: Thanh Dong
    /// Event: Page load
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Page_Load(object sender, EventArgs e)
    {
        ((MasterPage)this.Master).changeTitle("社員ログイン管理");
        //((MasterPage)this.Master).HideLiArea("frmJ_TraineeInterviewList");
        //((MasterPage)this.Master).HideLiArea();

        txt_社員コード.Focus();
        if (!IsPostBack)
        {   
            if(!string.IsNullOrEmpty(Request.Params["id"]))
            {
                int 企業コード = 0;
                Int32.TryParse(Request.Params["id"], out 企業コード);
                //= Convert.ToInt32(Request.Params["id"]);
                if (企業コード != 0)
                {
                    int kq = 0;
                    frmD_UserLoginManager_Exists_本社情報(企業コード, out kq);
                    if (kq == 1)
                    {
                        DataTable dt = new DataTable();
                        dt = _ユーザログインManager.frmD_UserLoginManager_Get人コード(企業コード);
                        if (dt.Rows.Count > 0)
                        {
                            Session["frmD_UserLoginManager_企業コード"] = 企業コード;
                            Session["frmD_UserLoginManager_人コード"] = dt.Rows[0]["人コード"].ToString();
                            Response.Redirect("frmD_UserLoginEdit.aspx");
                        }
                    }
                }
                
            }
            if (Session["frm_MRecCompManager_flag"] != null && Session["frm_MRecCompManager_flag"].ToString() == "1")
            {
                Response.Redirect("frmD_UserLoginEdit.aspx");
            }
            
            else
            {
                txt_社員コード.Focus();
                string 人コード = ConvertHTMLtoText(txt_社員コード.Text);
                string 姓名 = ConvertHTMLtoText(txt_社員名.Text);
                ViewState["flag"] = 0;
                int 役 = Convert.ToInt32(Session["役"]);
                if (Session["役"] == null)
                {
                    //Tro ve form nao do, khi nao xong nho cap nhat lai
                    Response.Redirect("frmD_Login.aspx");
                }
                else if (役 == 1)
                {
                    if (!string.IsNullOrEmpty(Request.Params["id"]))
                    {
                        string 企業コード = Request.Params["id"].ToString();
                        //drop down list 1,3,4
                        int 企業分類コード = Convert.ToInt32(Session["企業分類"]);
                        if (企業分類コード == -1 || Session["企業分類"] == null)
                            企業分類コード = 0;
                        //Show lable
                        ViewState["flag"] = 1;
                        ShowLable(企業コード);
                        ShowGridSearch(企業コード, 企業分類コード, 人コード, 姓名);

                    }
                    else
                    {
                        Response.Redirect("frmD_CompLoginManager.aspx");
                    }

                    //neu role =2,=3 xu ly khac
                }

                else //Xet truong hop 役 == 2
                {
                    string 企業コード = Convert.ToString(Session["企業コード_2"]);
                    //string 人コード = Convert.ToString(Session["人コード"]);
                    ViewState["flag"] = 2;
                    ShowLable(企業コード);
                    ShowGridSearch(企業コード, 0, 人コード, 姓名);

                }
            }
            
        
        }
    }

    /// <summary>
    /// Coder: Thanh Dong
    /// Function: Check extsts 企業ID in table 本社情報
    /// </summary>
    /// <param name="企業ID"></param>
    /// <param name="kq"></param>
    /// <returns></returns>
    public int frmD_UserLoginManager_Exists_本社情報(int 企業ID, out int kq)
    {
        return _本社情報Manager.frmD_UserLoginManager_Exists_本社情報(企業ID, out kq);
    }
    
    
    /// <summary>
    /// Coder: Thanh Dong
    /// Function: Convert number to string
    /// </summary>
    /// <param name="イベント"></param>
    /// <returns></returns>
    public string Convertイベント(object イベント)
    { 
        string temp = "";
        if (イベント.GetType().ToString() == "System.DBNull")
            return "";
        if (Convert.ToInt32(イベント.ToString()) == 0)
        {
            temp = "追加";
        }
        else
        {
            temp = "編集";
        }
        return temp;
    }

    /// <summary>
    /// Coder: Thanh Dong
    /// Function: Convert object to number
    /// </summary>
    /// <param name="flag"></param>
    /// <returns></returns>
    public int Event(object flag)
    {
        int temp = 1;
        if (flag.GetType().ToString() == "System.DBNull")
        {
            return 0;
        }
        if (Convert.ToInt32(flag.ToString()) == 0)
        {
            temp = 1;
        }
        else
        {
            temp = 2;
        }
        return temp;

    }

    /// <summary>
    /// Coder: Thanh Dong
    /// Function: Conver from session to string
    /// </summary>
    /// <returns></returns>
    public string 企業コード()
    {
        int flag = Convert.ToInt32(ViewState["flag"]);
        string temp ="";
        if (flag == 1)
        {
            temp = Request.Params["id"].ToString();
        }
        else
        {
            temp = Convert.ToString(Session["企業コード_2"]);
        }
        return temp;
    }


    /// <summary>
    /// Coder: Thanh Dong
    /// Function: Get 1 record from table 本社情報
    /// </summary>
    /// <param name="企業コード"></param>
    /// <returns></returns>
    private DataTable frmD_UserLoginManager_SelectBy企業コード(string 企業コード)
    {
        DataTable dt = new DataTable();
        dt = _本社情報Manager.frmD_UserLoginManager_SelectBy企業コード(企業コード);
        return dt;
    }

    /// <summary>
    /// Coder: Thanh Dong
    /// Function: Show data in lable
    /// </summary>
    /// <param name="企業コード"></param>
    private void ShowLable(string 企業コード)
    {
        DataTable dt = frmD_UserLoginManager_SelectBy企業コード(企業コード);
        if (dt.Rows.Count == 0)
        {
            lbl_企業.Text = "";
            lbl_企業コード.Text = "";
        }
        else
        {
            lbl_企業.Text = dt.Rows[0]["企業名"].ToString();
            lbl_企業コード.Text = dt.Rows[0]["企業コード"].ToString();
        }
        
    }

    /// <summary>
    /// Coder: Thanh Dong
    /// Function: Get data from table 基本情報
    /// </summary>
    /// <param name="企業コード"></param>
    /// <param name="企業分類コード"></param>
    /// <returns></returns>
    private DataTable frmD_UserLoginManager_Select_企業コード_基本情報(string 企業コード, int 企業分類コード)
    {
        DataTable dt = new DataTable();
        dt = _基本情報Manager.frmD_UserLoginManager_Select_企業コード_基本情報(企業コード, 企業分類コード);
        return dt;
    }

    //private void ShowGrid(string 企業コード, int 企業分類コード)
    //{
    //    DataTable dt = frmD_UserLoginManager_Select_企業コード_基本情報(企業コード, 企業分類コード);
    //    if (dt.Rows.Count == 0)
    //    {
    //        string strHeader = "社員コード,社員名,役職,生年月日,イベント";
    //        ShowGridViewNotClassEmpty(grv_社員一覧, strHeader, "データがありません。");
    //    }
    //    else
    //    {
    //        grv_社員一覧.DataSource = dt;
    //        grv_社員一覧.DataBind();
    //    }
    //}

    /// <summary>
    /// Coder: Thanh Dong
    /// Event: Paging
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void grv_社員一覧_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        grv_社員一覧.PageIndex = e.NewPageIndex;
        string 企業コード = "";
        int 企業分類コード = 0;
        string 人コード = ConvertHTMLtoText(txt_社員コード.Text);
        string 姓名 = ConvertHTMLtoText(txt_社員名.Text);
        if (Convert.ToInt32(ViewState["flag"]) == 1)
        {
            企業コード = Request.Params["id"].ToString();
            企業分類コード = Convert.ToInt32(Session["企業分類"]);
            if (企業分類コード == -1 || Session["企業分類"] == null)
            {
                企業分類コード = 0;
            }
            ShowGridSearch(企業コード, 企業分類コード, 人コード, 姓名);
        }
        else
        {
            企業コード = Convert.ToString(Session["企業コード_2"]);
            ShowGridSearch(企業コード, 企業分類コード, 人コード, 姓名);
        }
    }

    /// <summary>
    /// Coder: Thanh Dong
    /// Function: Show gridview empty
    /// </summary>
    /// <param name="grv"></param>
    /// <param name="strTableHeader"></param>
    /// <param name="strEmpty"></param>
    public void ShowGridViewNotClassEmpty(GridView grv, string strTableHeader, string strEmpty)
    {
        DataTable dt = new DataTable();
        string[] arrColumnNames = strTableHeader.Split(',');
        foreach (string str in arrColumnNames)
        {
            dt.Columns.Add(str);
        }
        grv.ShowFooter = false;
        DataRow r = dt.NewRow();
        dt.Rows.InsertAt(r, 0);
        grv.DataSource = dt;
        grv.DataBind();
        grv.Rows[0].Cells.Clear();
        TableCell cell = new TableCell();
        cell.ColumnSpan = grv.Columns.Count + 1;
        cell.Text = strEmpty;
        grv.Rows[0].Cells.Add(cell);

    }

    /// <summary>
    /// Coder: Thanh Dong
    /// Event: Button 戻る
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btn_戻る_Click(object sender, EventArgs e)
    {
        int 役 = Convert.ToInt32(Session["役"]);
        
        if (役 == 1)
        {
            Response.Redirect("frmD_CompLoginManager.aspx");
        }
        else 
        {
            int 団体管理 = Convert.ToInt32(Session["団体管理"]);
            int 送出し機関 = Convert.ToInt32(Session["送出し機関"]);
            if (団体管理 == 1)
            {
                Response.Redirect("frm_MOrgManager.aspx");
            }
            else if (送出し機関 == 1)
            {
                Response.Redirect("frm_MJointCompManager.aspx");
            }
            else
            {
                Response.Redirect("frmD_Login.aspx");
            }
        }
    }


    /// <summary>
    /// Coder: Thanh Dong
    /// Function: Search data
    /// </summary>
    /// <param name="企業コード"></param>
    /// <param name="企業分類コード"></param>
    /// <param name="人コード"></param>
    /// <param name="姓名"></param>
    /// <returns></returns>
    private DataTable frmD_UserLoginManager_Search(string 企業コード, int 企業分類コード, string 人コード, string 姓名)
    {
        DataTable dt = new DataTable();
        dt = _基本情報Manager.frmD_UserLoginManager_Search(企業コード, 企業分類コード, 人コード, 姓名);
        return dt;
    }


    /// <summary>
    /// Coder: Thanh Dong
    /// Function: Show data in gridview
    /// </summary>
    /// <param name="企業コード"></param>
    /// <param name="企業分類コード"></param>
    /// <param name="人コード"></param>
    /// <param name="姓名"></param>
    private void ShowGridSearch(string 企業コード, int 企業分類コード, string 人コード, string 姓名)
    {
        DataTable dt = frmD_UserLoginManager_Search(企業コード, 企業分類コード, 人コード, 姓名);
        if (dt.Rows.Count == 0)
        {
            string strHeader = "社員コード,社員名,役職,生年月日,イベント";
            ShowGridViewNotClassEmpty(grv_社員一覧, strHeader, "データがありません。");
        }
        else
        {
            grv_社員一覧.DataSource = dt;
            grv_社員一覧.DataBind();
        }
    }
    
    
    /// <summary>
    /// Coder: Thanh Dong
    /// Event: Search data
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btn_検索_Click(object sender, EventArgs e)
    {
        string 企業コード="";
        int 企業分類コード=0;
        string 人コード = ConvertHTMLtoText(txt_社員コード.Text);
        string 姓名 = ConvertHTMLtoText(txt_社員名.Text);
        if (Convert.ToInt32(ViewState["flag"]) == 1)
        {
            企業コード = Request.Params["id"].ToString();
            企業分類コード = Convert.ToInt32(Session["企業分類"]);
            if (企業分類コード == -1 || Session["企業分類"] == null)
            {
                企業分類コード = 0;
            }
            ShowGridSearch(企業コード, 企業分類コード, 人コード, 姓名);
        }
        else
        {
            企業コード = Convert.ToString(Session["企業コード_2"]);
            ShowGridSearch(企業コード, 企業分類コード, 人コード, 姓名);
        }
    }

    /// <summary>
    /// Coder: Thanh Dong
    /// Function: Convert character html to text
    /// </summary>
    /// <param name="temp"></param>
    /// <returns></returns>
    public string ConvertHTMLtoText(string temp)
    {
        temp = temp.Replace("<", "&lt;");
        temp = temp.Replace(">", "&gt;");
        return temp;
    }

    /// <summary>
    /// Coder: Thanh Dong
    /// Function: Cut string when string too long
    /// </summary>
    /// <param name="temp"></param>
    /// <returns></returns>
    public string ShowTextLength(string temp)
    {

        if (checkContainsUnicodeCharacter(temp))
        {
            //true tieng nhat
            if (temp.Length > 20)
            {
                temp = temp.Substring(0, 20) + "...";
            }
        }
        else
        {
            //tieng viet
            if (temp.Length > 40)
            {
                temp = temp.Substring(0, 40) + "...";
            }
        }

        return temp;
    }

    /// <summary>
    /// Coder: Thanh Dong
    /// Function: Check unicode string
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    public bool checkContainsUnicodeCharacter(string input)
    {
        const int MaxAnsiCode = 255;
        char[] a = input.ToCharArray();
        for (int i = 0; i < a.Length; i++)
        {
            if (a[i] > MaxAnsiCode)
            {
                return true;
            }
        }
        return false;
    }
}
